package com.pni.game.cards;

import java.util.Collection;

/**
 * 	This is an interface representing any sort of entity which may act as a collection of cards (e.g. Players, Poker Table, Thrash Piles, etc.)
 * @author neevans
 *
 */
public interface CardHolder {
	
	public void addCard(Card card);
	
	/**
	 * Removes a card from the card holders collection of cards.  Which card is returned is up to the card holder to decide.
	 * @param card
	 * @return Card from the card holders collection
	 */
	public Card takeCard();
	
	/**
	 * Takes all cards that the Card Holder currently has within its possession
	 * @return A Collection of all cards that were in card holders possession.
	 */
	public Collection<Card> takeAllCards();
	
	public Collection<Card> getCards();
	
	public int numberOfCards();

}
